package j08jicheng;

public class J1 {
}

class Fa{
    int age = 3;
    private int money=100;
    public void f1(){
        System.out.println("i am f1");
    }

    public int getMoney() {
        return money;
    }

    public void fx(){
        System.out.println("i am fx in fa");
    }
}
class Fa2{}
class Ch extends Fa{
    //实际情况下，不会这么调用，但是理论上可以
    //就近原则，子类会覆盖父类里的属性或者方法
    int age = 300;
    public void printAge(){
        System.out.println("age = "+age);
        System.out.println("age = "+this.age);
        //super，引用父类的属性或方法
        System.out.println("super.age = " + super.age);//3
    }
    //方法重写（overwrite），主要是父类的方法，不够子类使用，重写补充功能
    //子类的方法，默认会覆盖父类的方法
    //方法名一样，参数一样，返回一样，全部一样
    public void fx(){
        System.out.println("i am fx in ch");
        //强制调用父类的方法
        super.fx();
    }

}

class ChTest{
    public static void main(String[] args) {
        Ch c1 = new Ch();
        System.out.println("c1.age = " + c1.age);
        c1.f1();
        System.out.println("c1.getMoney() = " + c1.getMoney());
        System.out.println("======");
        c1.printAge();

        System.out.println("======method====");
        Ch c2 = new Ch();
        c2.fx();
    }
}